DynamoDBのTTL(Time to Live)のAttribute Nameに「ttl(予約語)」を使っても動作するか試してみた

DynamoDBのTTL(Time to Live)のAttribute Nameに「ttl(予約語)」を使っても動作するか試してみた

DynamoDBのTTLの属性名に迷いました。そして、「もうttlで良いのでは?」となりました。
Clock Icon2022.09.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon DynamoDBには、TTL(Time to Live)があります。 これは、Unixtimeで指定した時刻になると、48時間以内にデータを削除してくれる便利機能です。

このTTL機能に使う属性名をいろいろ悩んでいたところ、「もうttlで良いのでは?」と考えました。 しかし、DynamoDBの予約語にはttlがあります。この予約語は「更新式などを書くときに直接使えないから、#付きのプレースホルダーを使ってね」の意図です。

そこで、「DynamoDBの予約語にttlはあるけど、TTL機能の属性名に使っても動作するよね?」を確認してみました。

おすすめの方

  • DynamoDBのTTLの属性名に迷っている方
  • DynamoDBのTTLを知りたい方

DynamoDBテーブルを作成して、TTLを設定する

DynamoDBテーブルを作成する

適当なDynamoDBテーブルを作成します。

DynamoDBテーブルを作成する

実験用のデータを追加する

実験用のデータを追加します。

  • ttl: 2022-09-27T09:00:00
aws dynamodb put-item \
    --table-name ttl-test \
    --item '{"deviceId":{"S":"device1"}, "ttl": {"N":"1664236800"}}'
  • ttl: 2022-09-28T09:00:00
aws dynamodb put-item \
    --table-name ttl-test \
    --item '{"deviceId":{"S":"device2"}, "ttl": {"N":"1664323200"}}'

適当なデータを追加する

DynamoDBにTTLを設定する

TTLの属性名を「ttl」として設定します。

DynamoDB TTLを有効にする

ついでに、任意の時間でプレビュー確認してみると、削除されそうでした。

DynamoDB TTLの結果プレビュー

DynamoDB TTLの結果プレビュー

TTLを設定した時刻まで待って、結果を確認する

無事に削除されました

2件あったデータが1件になりました。

DynamoDB TTLによって、データが消えた

TTL設定を確認すると、1件削除されたことが分かります。

DynamoDB TTLによって、データが消えた

さいごに

DynamoDBのTTL機能の属性名に「ttl」を使っても大丈夫でした。 ただし、更新式などを書くときは、#付きのプレースホルダーを使うのを忘れないように注意ですね。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.